Custom events এবং listeners একটি সিস্টেমে নির্দিষ্ট কার্যক্রম বা ইভেন্ট ট্র্যাক করার জন্য ব্যবহৃত হয়। Laravel এ custom events এবং listeners তৈরি করা খুবই সহজ এবং এটি আমাদের অ্যাপ্লিকেশনকে আরও নমনীয় এবং সাশ্রয়ী করে তোলে। এই প্রক্রিয়ায়, আপনি নিজস্ব ইভেন্ট তৈরি করতে পারেন এবং সেগুলোর জন্য listeners তৈরি করে তাদের কার্যক্ষমতা নিয়ন্ত্রণ করতে পারেন।
Custom Event তৈরি করা
Laravel এ custom event তৈরি করতে হলে আপনি প্রথমে একটি নতুন ইভেন্ট ক্লাস তৈরি করবেন।
Step 1: Event তৈরি করুন
Laravel এ artisan কমান্ড ব্যবহার করে একটি ইভেন্ট তৈরি করা যায়।
php artisan make:event OrderShipped
এটি একটি OrderShipped নামের ইভেন্ট তৈরি করবে, যা app/Events/OrderShipped.php ফাইলে থাকবে।
<?php
namespace App\Events;
use Illuminate\Queue\SerializesModels;
class OrderShipped
{
use SerializesModels;
public $order;
/**
* Create a new event instance.
*
* @param $order
* @return void
*/
public function __construct($order)
{
$this->order = $order;
}
}
এখানে OrderShipped ইভেন্টটি একটি $order ডেটা গ্রহণ করবে, যেটি Order মডেলের একটি ইনস্ট্যান্স হতে পারে।
Listener তৈরি করা
Listener ক্লাস হলো সেই কোড যা একটি নির্দিষ্ট ইভেন্ট ঘটলে কার্যকর হয়। আপনার ইভেন্টের জন্য একটি listener তৈরি করতে হবে।
Step 2: Listener তৈরি করুন
php artisan make:listener SendShipmentNotification --event=OrderShipped
এটি app/Listeners/SendShipmentNotification.php ফাইলটি তৈরি করবে।
<?php
namespace App\Listeners;
use App\Events\OrderShipped;
use Illuminate\Support\Facades\Mail;
use App\Mail\OrderShippedMail;
class SendShipmentNotification
{
/**
* Handle the event.
*
* @param \App\Events\OrderShipped $event
* @return void
*/
public function handle(OrderShipped $event)
{
// Order শিপমেন্টের ইমেইল পাঠানো
Mail::to($event->order->user->email)->send(new OrderShippedMail($event->order));
}
}
এখানে SendShipmentNotification listener ইভেন্ট OrderShipped ঘটে যাওয়ার পর $event->order ব্যবহার করে শিপমেন্ট সম্পর্কিত একটি ইমেইল পাঠাবে।
Event এবং Listener রেজিস্টার করা
আপনার custom events এবং listeners কে রেজিস্টার করতে, Laravel এর EventServiceProvider ক্লাসটি ব্যবহার করতে হবে।
Step 3: EventServiceProvider এ রেজিস্টার করুন
app/Providers/EventServiceProvider.php ফাইলে, $listen অ্যারের মধ্যে আপনার ইভেন্ট এবং তার listener যুক্ত করুন:
protected $listen = [
\App\Events\OrderShipped::class => [
\App\Listeners\SendShipmentNotification::class,
],
];
এখানে, OrderShipped ইভেন্ট ঘটলে SendShipmentNotification listener কার্যকর হবে।
Event Trigger করা
এখন, আপনি ইভেন্টটি যেকোনো জায়গা থেকে ট্রিগার করতে পারবেন। সাধারণত ইভেন্টগুলো কন্ট্রোলার বা সার্ভিসে ট্রিগার করা হয়।
Step 4: Event ট্রিগার করুন
use App\Events\OrderShipped;
// ইভেন্ট ট্রিগার করুন
event(new OrderShipped($order));
এখানে $order হল ঐ অর্ডার তথ্য যা আপনি ইভেন্টের মাধ্যমে পাঠাতে চান।
Event Listener Testing
এখন, আপনি ইভেন্টটি ট্রিগার করলে, Laravel আপনার listener কে স্বয়ংক্রিয়ভাবে ট্রিগার করবে এবং listener এর কোড চলবে। এর মাধ্যমে আপনি বিভিন্ন কার্যক্রম যেমন ইমেইল পাঠানো, লগ তৈরি, বা অন্যান্য কাজ সম্পন্ন করতে পারবেন।
সারাংশ
- Custom Events: ইভেন্টগুলি আপনার অ্যাপ্লিকেশনের একটি নির্দিষ্ট কার্যক্রম বা অবস্থা চিহ্নিত করতে ব্যবহৃত হয়।
- Listeners: লিসেনার হল সেই কোড যা ইভেন্ট ঘটে গেলে কার্যকর হয়।
- EventServiceProvider: ইভেন্ট এবং লিসেনার গুলি রেজিস্টার করা হয়, যাতে Laravel সেগুলিকে সঠিকভাবে সংযোগ করতে পারে।
এইভাবে, Laravel এ custom events এবং listeners তৈরি করে আপনি সহজেই বিভিন্ন ইভেন্ট ট্র্যাক করতে এবং সেগুলোর জন্য কোড কার্যকর করতে পারবেন।
Read more